package com.kds.smarthome.mapper;

import com.kds.smarthome.entity.QuartzJobLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 定时任务日志Mapper接口
 */
@Mapper
public interface QuartzJobLogMapper {
    
    /**
     * 插入任务日志
     */
    int insert(QuartzJobLog jobLog);
    
    /**
     * 根据ID查询任务日志
     */
    QuartzJobLog selectById(@Param("logId") Long logId);
    
    /**
     * 根据任务ID查询任务日志
     */
    List<QuartzJobLog> selectByJobId(@Param("jobId") String jobId);
    
    /**
     * 查询任务的最近日志
     */
    List<QuartzJobLog> selectRecentByJobId(@Param("jobId") String jobId, @Param("count") Integer count);
    
    /**
     * 根据条件查询任务日志
     */
    List<QuartzJobLog> selectByCondition(
            @Param("jobId") String jobId,
            @Param("jobName") String jobName,
            @Param("jobGroup") String jobGroup,
            @Param("status") Integer status,
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime,
            @Param("offset") Integer offset,
            @Param("limit") Integer limit);
    
    /**
     * 根据条件查询任务日志总数
     */
    int countByCondition(
            @Param("jobId") String jobId,
            @Param("jobName") String jobName,
            @Param("jobGroup") String jobGroup,
            @Param("status") Integer status,
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime);
    
    /**
     * 删除任务日志
     */
    int deleteById(@Param("logId") Long logId);
    
    /**
     * 清空指定日期之前的日志
     */
    int deleteBeforeDate(@Param("beforeDate") Date beforeDate);
} 